Modern digital computer systems typically include a plurality of central processor units (CPUs), memory, and a plurality of peripheral input/output (I/O) devices connected by means of a common system bus. The CPUs, memory, and I/O devices in such a computer system operate generally asynchronously, communicating data over the system bus at randomly occurring intervals.
However, from time to time, the operations in a complex computer system need to be synchronized to coordinate processing control and bus communications. The two main methods that have been used to synchronize the various CPUs and I/O devices in a computer system are interrupts and polling.
Interrupts are used generally to signal the occurrence of primarily sporadic and unanticipated events requiring immediate attention. Where the occurrence of a future desired event is anticipated, polling is generally used. Computers commonly perform polling by having a polling program repeatedly examine, via the system bus, a status register until the occurrence of the desired event is reflected by the status data in the status register. The occurrence of the event is generally indicated by the transition of the various bits in the status register to some predetermined or desired value.
However, inherently, polling has some fundamental deficiencies severely impacting system bus bandwidth and system throughput. The repeated reading of the status data in the status register during polling, over the system bus, may saturate bus throughput by consuming all of the available read/write cycles on the system bus while polling. The bus, when thus saturated, becomes essentially unavailable for communicating other transactions between the various devices connected to the bus.
These adverse consequences of polling have been minimized by decreasing the frequency of status register sampling during polling. But if the status register is examined on a less frequent basis, then it is likely that the detection of the desired event is delayed unnecessarily, severely retarding system synchronization. Therefore, it is desirable to provide a method and apparatus that afford improved polling without adversely affecting computer system operations, and it is to these ends that the present invention is directed.